﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using DataTier.Entities;
using DataTier;

namespace RusIS.DataServices
{
    [ServiceContract(Namespace = WCFSettings.Namespace)]
    [XmlSerializerFormat]
    public interface IAuthentificateService
    {
        /// <summary>
        /// Возвращает роль, применяемую к анонимному пользователю
        /// </summary>
        /// <param name="roleId"></param>
        /// <returns></returns>
        [OperationContract]
        RoleEntity GetAnonimusRole(int roleId);


        [OperationContract]
        UserSecurityDetails GetUserSecurityDetails(string DomainLoginName);


        [OperationContract]
        int AuthenticateUser(string userName, string hashPassword);


        /// <summary>
        /// Возвращается список доступных действий по названию права доступа
        /// </summary>
        /// <param name="permissionName"></param>
        /// <returns></returns>
        [OperationContract]
        List<MVCAction> MVCActionsByPermissionName(string permissionName);


        /// <summary>
        /// Возвращается список доступных действий по названию права доступа
        /// </summary>
        /// <param name="permissionId"></param>
        /// <returns></returns>
        [OperationContract]
        List<MVCAction> MVCActionsByPermissionId(int permissionId);


        /// <summary>
        /// Регистрирует нового пользователя
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="hashPassword"></param>
        /// <param name="email"></param>
        /// <returns></returns>
        [OperationContract]
        UserSecurityDetails RegisterUser(string userName, string hashPassword, string email);


        /// <summary>
        /// Формирование Хэша пароля
        /// </summary>
        /// <param name="password"></param>
        /// <returns></returns>
        [OperationContract]
        string CalcHash(string password);


    }
}
